import java.util.*;

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定，请勿修改，直接返回方法规定的值即可
     *
     *
     * @param x int整型 
     * @return int整型
     */
    public int sqrt (int x) {
//0是特判
        if(x==0){
            return 0;
        }

//开始二分查找
        int left=1;
        int right=x;

        while(left<=right){
            int mid=(left+right)/2;
            if(mid<=x/mid&&mid+1>x/(mid+1)){
                //如果一个数mid,mid*mid等于x，mid是x的平方根
                //如果一个数mid,mid*mid小于x,(mid+1)*(mid+1)大于x,那么mid是x的平方根
                return mid;
            }else if(mid>x/mid){
                //mid大了,往左边找
                right=mid-1;
            }else{
                //mid小了往右边找
                left=mid+1;
            }

        }
        return -1;
    }
}